package com.zengqingfa.algorithm.leetcode.array;

import java.util.Arrays;

/**
 * @author zengqingfa
 * @className LeetCode_977_SortOfQuare
 * @description
 * @create 2021/9/1 23:25
 * 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
 * <p>
 * 示例 1： 输入：nums = [-4,-1,0,3,10] 输出：[0,1,9,16,100] 解释：平方后，数组变为 [16,1,0,9,100]，排序后，数组变为 [0,1,9,16,100]
 * <p>
 * 示例 2： 输入：nums = [-7,-3,2,3,11] 输出：[4,9,9,49,121]
 */
public class LeetCode_977_SortOfQuare {

    public static void main(String[] args) {
        int[] arr = {-11, -1, 1, 20};
        int[] res = sortedSquares(arr);
        System.out.println(Arrays.toString(res));
    }

    public static int[]  sortedSquares(int[] nums) {
        int[] result = new int[nums.length];
        int index = nums.length - 1;
        for (int i = 0, j = nums.length - 1; i <=j; ) {
            if (nums[i] * nums[i] > nums[j] * nums[j]) {
                result[index--] = nums[i] * nums[i];
                i++;
            } else {
                result[index--] = nums[j] * nums[j];
                j--;
            }
        }
        return result;
    }


}